void foo(int[5]);
void fooc(int x[const 5]);
void foos(int x[static 5]);
void foov(int x[volatile 5]);
void foor(int x[restrict 5]);
void fooc(int[const 5]);
void foos(int[static 5]);
void foov(int[volatile 5]);
void foor(int[restrict 5]);
void fooc(int(*const x));
void foos(int* x);
void foov(int* volatile x);
void foor(int* restrict x);
void fooc(int x[volatile 5]) {
    x[3] = 42;
#ifdef INVALID
    x = 0;
#endif
}
void foovm(int x[const * ]);
void foovm(int* const x);
#ifdef INVALID
void wrongc(int x[3][const 4]);
void wrongvm(int x[static * ]);
void foovm(int x[const * ]) { x[2] = 1; }
#endif
int main() { return 0; }
